public class LastSegmentExtractor {

    public static String extractLastSegment(String text) {
        // 如果输入文本为空，直接返回 null
        if (text == null || text.isEmpty()) {
            return null;
        }

        // 找到最后一个逗号的位置
        int lastCommaIndex = text.lastIndexOf(',');
        if (lastCommaIndex == -1) {
            return null; // 没有逗号
        }

        // 从逗号前一个位置开始向前查找
        int endIndex = lastCommaIndex - 1;
        int startIndex = endIndex;

        // 向前查找直到遇到指定字符或开头
        while (startIndex >= 0) {
            char c = text.charAt(startIndex);

            // 检查是否为终止字符：中文、括号、空格
            if (isChinese(c) || isClosingBracket(c) || Character.isWhitespace(c)) {
                // 跳过终止字符前的空白
                while (startIndex + 1 <= endIndex && Character.isWhitespace(text.charAt(startIndex + 1))) {
                    startIndex++;
                }
                break;
            }

            startIndex--;
        }

        // 调整起始位置（跳过终止字符）
        startIndex++;

        // 提取子字符串
        if (startIndex <= endIndex && startIndex >= 0) {
            return text.substring(startIndex, endIndex + 1);
        }

        return null;
    }

    // 判断字符是否为中文
    private static boolean isChinese(char c) {
        Character.UnicodeBlock block = Character.UnicodeBlock.of(c);
        return block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || block == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
                || block == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION;
    }

    // 判断字符是否为结束括号
    private static boolean isClosingBracket(char c) {
        return c == ')' || c == '）';
    }

    // 测试方法
    public static void main(String[] args) {
        String[] testCases = {
                "\t\tOut= ,0\\L3118_1汽动给水泵B中间抽头出口电动阀 连锁关 L3118_1_5,", // L3118_1_5
                "\t\tOut= ,0\\汽动给水泵B中间抽头出口电动阀 开反馈 22A0410,",       // 22A0410
                "\t\tOut= ,0\\汽动给水泵B中间抽头出口电动阀 关反馈）22A0411,",      // 22A0411
                "\t\tOut= ,0\\汽动给水泵B中间抽头出口电动阀 关反馈)22A0411,",       // 22A0411
                "示例文本,前面部分,最后描述部分 设备编号,",                   // 设备编号
                "没有逗号的文本",                                        // null
                "没有结束标志的文本,",                                     // 提取","前所有内容
                "多行文本,\n第一行\n第二行)结尾,",                         // 支持多行文本
                "特殊用例(括号内的内容) 目标值,",                          // 目标值
                "  空格测试   ,   ABC123  ,"                            // ABC123
        };

        for (String text : testCases) {
            String result = extractLastSegment(text);
            System.out.println("输入: \"" + text + "\"");
            System.out.println("提取结果: \"" + (result != null ? result : "null") + "\"");
            System.out.println("----------------------------------------");
        }
    }
}